/*
* pettanR system.js
- * version 0.4.1
+ * version 0.4.2
*
* author:
* itozyun
ROLE_IS_ARTIST = 2^1,
ROLE_IS_VISITOR = 2^0,
ROLE_IS_UNKROWN = 2^-1,
- UPDATE_POLICY_SOCAV = 0x11111,// s: super user
- UPDATE_POLICY_SOCA_ = 0x11110,// o: owner( comic || panel || picture )
- UPDATE_POLICY_SOC__ = 0x11100,// c: creator
- UPDATE_POLICY_SO_A_ = 0x11010,// a: artist
- UPDATE_POLICY_SO___ = 0x11000,// v: visitor
- UPDATE_POLICY__O___ = 0x01000,// l: lisence manager
- UPDATE_POLICY_S____ = 0x10000,
- UPDATE_POLICY______ = 0x00000,
- FILEDATA_RESITER = [],
- FILEDATA_HAS_rID_RESISTER = {},
- FILEDATA_ACCESS = [],
+ UPDATE_POLICY_SOCAV = parseInt( '11111', 2),// s: super user
+ UPDATE_POLICY_SOCA_ = parseInt( '11110', 2),// o: owner( comic || panel || picture )
+ UPDATE_POLICY_SOC__ = parseInt( '11100', 2),// c: creator
+ UPDATE_POLICY_SO_A_ = parseInt( '11010', 2),// a: artist
+ UPDATE_POLICY_SO___ = parseInt( '11000', 2),// v: visitor
+ UPDATE_POLICY__O___ = parseInt( '01000', 2),// l: lisence manager
+ UPDATE_POLICY_S____ = parseInt( '10000', 2),
+ UPDATE_POLICY______ = parseInt( '00000', 2),
+ FILEDATA_RESITER = [], // store all of fileData( json object )
+ FILEDATA_HAS_domainID_RESISTER = {},
+ FILEDATA_ACCESS = [], // file operations for Kernel only ! hide from Out of pettanr.file
FILE_OBJECT_POOL = [];
-
+
var REQUEST_CONTROLER = ( function(){
var REQUEST_TICKET_RESISTER = [],
DATA_TYPE_ARRAY = 'json,xml,html,text'.split( ','),
if( typeof UIDorFILEorFILEDATA === 'number'){
_data = FILEDATA_RESITER[ UIDorFILEorFILEDATA] || null;
} else
- if( UIDorFILEorFILEDATA.getUID){
+ if( UIDorFILEorFILEDATA instanceof FileClass){
_uid = UIDorFILEorFILEDATA.getUID();
_data = FILEDATA_RESITER[ _uid] || null;
} else {
- _data = UIDorFILEorFILEDATA;
+ _data = UIDorFILEorFILEDATA || null;
}
if( _data === null || !_data) return null;
}
function getChildren( UIDorFILE){
var _access = getFileDataAccess( UIDorFILE);
- return _access !== null ? _access.CHILDREN : null
+ return _access !== null ? _access.DATA.CHILDREN : null
}
function onLoadJson( _file, _json){
var _access = getFileDataAccess( _file),
_rFolderData,
_artistFolderData, _artistFolder,
_comicFolderData, _comicFolder,
- _authorFolderData, _authorFolder;
+ _authorFolderData, _authorFolder,
+ _reaourceID = buildDomainID( _data.json, _childType);
for(var i=0; i<l; ++i){
- _newData = buildFileData( _json[ i], _data.json, _childType);
- if( _newData.rID){
- _rFolderData = getFolderDataByResourceID( buildResourceID( _data.json, _childType), _childType, _file);
+ _newData = buildFileData( _json[ i], _data.json, _data, _childType);
+
+ if( _reaourceID !== null){
+ _rFolderData = getDomainFolder( _reaourceID, _childType, _file);
_rFolderData.children.push( _newData);
}
if( _newData.artist){
- _artistFolderData = _artistFolderData || getFolderDataByResourceID( buildResourceID( _data.json, 'artist'), 'Artists', _file);
+ _artistFolderData = _artistFolderData || getDomainFolder( buildDomainID( _data.json, 'artist'), 'Artists', _file);
_artistFolder = _artistFolder || new FileClass( SYSTEM_TREE, _file, _artistFolderData);
- _rFolderData = getFolderDataByResourceID( buildResourceID( _artistFolderData.rID, '' +_newData.artist.id), _newData.artist.name, _artistFolder);
+ _rFolderData = getDomainFolder( buildDomainID( _artistFolderData.rID, '' +_newData.artist.id), _newData.artist.name, _artistFolder);
_rFolderData.children.push( _newData);
}
if( _newData.comic){
- _comicFolderData = _comicFolderData || getFolderDataByResourceID( buildResourceID( _data.json, 'comic'), 'Comics', _file);
+ _comicFolderData = _comicFolderData || getDomainFolder( buildDomainID( _data.json, 'comic'), 'Comics', _file);
_comicFolder = _comicFolder || new FileClass( SYSTEM_TREE, _file, _comicFolderData);
- _rFolderData = getFolderDataByResourceID( buildResourceID( _comicFolderData.rID, '' +_newData.comic.id), _newData.comic.title, _comicFolder);
+ _rFolderData = getDomainFolder( buildDomainID( _comicFolderData.rID, '' +_newData.comic.id), _newData.comic.title, _comicFolder);
_rFolderData.children.push( _newData);
}
if( _newData.author){
- _authorFolderData = _authorFolderData || getFolderDataByResourceID( buildResourceID( _data.json, 'author'), 'Author', _file);
+ _authorFolderData = _authorFolderData || getDomainFolder( buildDomainID( _data.json, 'author'), 'Author', _file);
_authorFolder = _authorFolder || new FileClass( SYSTEM_TREE, _file, _authorFolderData);
- _rFolderData = getFolderDataByResourceID( buildResourceID( _authorFolderData.rID, '' +_newData.author.id), _newData.author.name, _authorFolder);
+ _rFolderData = getDomainFolder( buildDomainID( _authorFolderData.rID, '' +_newData.author.id), _newData.author.name, _authorFolder);
_rFolderData.children.push( _newData);
}
}
_data.state = FILE_STATE_IS_ERROR;
}
}
- function buildFileData( _data, _url, _type){
- if( !_data.name){
- _data.name = [ _data.id, _data.ext].join( '.');
- }
+ function buildFileData( _data, _url, _parent, _type){
_data.type = _type;
-
- if( _type === FILE_TYPE_IS_IMAGE){
- _data.thumbnail = 'thumbnail/' + _data.name;
- }
-
- var _rID = buildResourceID( _url, _type);
- if( _rID !== null){
- _data.rID = _rID + _data.id;
- FILEDATA_HAS_rID_RESISTER[ _data.rID] = _data;
+
+ if( _type === FILE_TYPE_IS_PANEL){
+ _data.comicFileData = _parent;
}
-
+
FILEDATA_RESITER.push( _data);
return _data;
}
- function buildResourceID( _url, _type){
- if( _url === null) return null;
- var _typeStr;
+ function buildDomainID( _url, _type){
+ if( !_url) return null;
+ var _typeStr = null;
if( typeof _type !== 'number'){
_typeStr = _type
if( _type === FILE_TYPE_IS_PANEL){
_typeStr = 'panel';
}
+ if( _typeStr === null) return null;
+
return [ _url.replace(/https?:\/\/([^\/]*).*/, '$1'), _typeStr].join('_');
}
/**
- * getFileByResourceID( _rID, opt_name, opt_folder)
+ * getFileByResourceID( _domainID, opt_name, opt_folder)
* opt 指定で 新しいフォルダの作成
* rID を持つ Object は {} にも格納.
*/
- function getFolderDataByResourceID( _rID, opt_name, opt_folder){
- if( FILEDATA_HAS_rID_RESISTER[ _rID]){
- return FILEDATA_HAS_rID_RESISTER[ _rID];
+ function getDomainFolder( _domainID, opt_name, opt_folder){
+ if( FILEDATA_HAS_domainID_RESISTER[ _domainID]){
+ return FILEDATA_HAS_domainID_RESISTER[ _domainID];
}
if( !opt_name && !opt_folder) return;
if( opt_name === FILE_TYPE_IS_PANEL){
_fileName = 'Panels';
} else {
- _fileName = opt_name.toString();
+ _fileName = typeof opt_name;
}
var _newData = {
name: _fileName,
type: FILE_TYPE_IS_FOLDER,
- rID: _rID,
+ rID: _domainID,
children: []
};
FILEDATA_RESITER.push( _newData);
- FILEDATA_HAS_rID_RESISTER[ _rID] = _newData;
+ FILEDATA_HAS_domainID_RESISTER[ _domainID] = _newData;
if( opt_folder && opt_folder.isChildFile( _newData) === false){
var _access = getFileDataAccess( opt_folder),
_data = _access !== null ? _access.DATA : null;
- _access === null && alert( _rID)
+ _access === null && alert( _domainID)
if( _data !== null){
_data.children.push( _newData);
}
data.children = [];
}
var TYPE = data.type,
+ name = data.name || null,
+ thumbnail = null,
uid = FILE_CONTROLER.getUID( data),
CHILDREN = data.children,
instance;
{
TYPE: TYPE,
DATA: data,
- CHILDREN: CHILDREN,
destroy: destroy,
updateParent: updateParent,
fileEventChatcher: dispatchEvent
}
);
function destroy(){
- CHILDREN.splice( 0, CHILDREN.length);
- parentFile = data = CHILDREN = null;
- delete this.destroy;
+ name = thumbnail = parentFile = data = CHILDREN = null;
+
}
function updateParent( _parent){
parentFile = _parent;
function dispatchEvent( e){
FILE_CONTROLER.fileEventRellay( instance, TREE, e);
}
- return {
- init: function(){
- instance = this;
- delete this.init;
- },
- TYPE: function(){ return TYPE;},
- getName: function(){
- return data.name || 'no_name';
- },
- getThumbnail: function(){
- return data.thumbnail || null;
- },
- getUID: function(){
- return uid;
- },
- getState: function(){
- return data.state !== undefined ? data.state : FILE_STATE_IS_OK;
- },
- getChildFileLength: function(){
- return CHILDREN && typeof CHILDREN.length === 'number' ? CHILDREN.length : 0;
- },
- getChildFileByIndex: function( _index){
- if( typeof _index !== 'number' || _index < 0 || typeof CHILDREN.length !== 'number' || _index >= CHILDREN.length) return null;
- _file = new FileClass( TREE, this, CHILDREN[ _index]);
- _file.init();
- return _file;
- },
- getChildFileIndex: function( _FILEorFILEDATA){
- if( !CHILDREN || typeof CHILDREN.length !== 'number') return -1;
- var l = FILEDATA_RESITER.length,
- _fileData = null;
- for( var i=0; i<l; ++i){
- if( _FILEorFILEDATA === FILEDATA_RESITER[ i]){
- _fileData = _FILEorFILEDATA;
- break;
- };
- }
- if( _fileData === null){
- _fileData = FILE_CONTROLER.getFileData( _FILEorFILEDATA);
- }
- if( _fileData === null) return -1;
-
- l = CHILDREN.length
- for( var i=0; i<l; ++i){
- if( CHILDREN[ i] === _fileData) return i;
- }
- return -1;
- },
- isChildFile: function( _FILEorFILEDATA){
- return this.getChildFileIndex( _FILEorFILEDATA) !== -1;
- },
- getAttribute: function( KEYorKEYARRAY){
- return FILE_CONTROLER.getFileAttribute( UID, KEYorKEYARRAY);
- },
- getSeqentialFiles: function(){
- FILE_CONTROLER.getSeqentialFiles( this);
- },
- updateAttribute: function( key, value, opt_callback){
- TREE.updateFileAttribute( UID, key, value, opt_callback);
- },
- move: function( _newFolder, _newIndex, opt_callback){
- TREE.move( parentFile, UID, _newFolder, _newIndex, opt_callback);
- },
- replace: function( _newIndex, opt_callback){
- TREE.replace( parentFile, UID, _newIndex, opt_callback);
- },
- addEventListener: function( _eventType, _callback){
- FILE_CONTROLER.addEventListener( UID, _eventType, _callback);
- },
- removeEventListener: function( _eventType, _callback){
- FILE_CONTROLER.removeEventListener( UID, _eventType, _callback);
- },
- collect: function(){
-
+
+ /* grobal Methods */
+ this.init = function(){
+ instance = this;
+ delete this.init;
+ }
+ this.TYPE = function(){
+ return TYPE;
+ }
+ this.getName = function(){
+ if( name !== null) return name;
+ if( data.name){
+ return data.name;
+ }
+ if( TYPE === FILE_TYPE_IS_IMAGE){
+ name = [ data.id, data.ext].join( '.');
+ } else
+ if( TYPE === FILE_TYPE_IS_PANEL){
+ name = data.comic.title + ' | ' +data.t;
+ }
+ return name || 'no_name';
+ }
+ this.getThumbnail = function(){
+ if( thumbnail !== null) return thumbnail;
+ if( TYPE === FILE_TYPE_IS_IMAGE){
+ thumbnail = [ 'thumbnail/', data.id, '.', data.ext].join( '');
+ }
+ return thumbnail || null;
+ }
+ this.getUID = function(){
+ return uid;
+ }
+ this.getState = function(){
+ return data.state !== undefined ? data.state : FILE_STATE_IS_OK;
+ }
+ this.getChildFileLength = function(){
+ return CHILDREN && typeof CHILDREN.length === 'number' ? CHILDREN.length : 0;
+ }
+ this.getChildFileByIndex = function( _index){
+ if( typeof _index !== 'number' || _index < 0 || typeof CHILDREN.length !== 'number' || _index >= CHILDREN.length) return null;
+ _file = new FileClass( TREE, this, CHILDREN[ _index]);
+ _file.init();
+ return _file;
+ }
+ this.getChildFileIndex = function( _FILEorFILEDATA){
+ if( !CHILDREN || typeof CHILDREN.length !== 'number') return -1;
+ var l = CHILDREN.length,
+ _fileData = FILE_CONTROLER.getFileData( _FILEorFILEDATA);
+ if( _fileData === null) return -1;
+ for(var i=0; i<l; ++i){
+ if( CHILDREN[ i] === _fileData) return i;
}
+ return -1;
+ }
+ this.isChildFile = function( _FILEorFILEDATA){
+ return this.getChildFileIndex( _FILEorFILEDATA) !== -1;
+ }
+ this.getAttribute = function( KEYorKEYARRAY){
+ return FILE_CONTROLER.getFileAttribute( UID, KEYorKEYARRAY);
+ }
+ this.getSeqentialFiles = function(){
+ FILE_CONTROLER.getSeqentialFiles( this);
+ }
+ this.updateAttribute = function( key, value, opt_callback){
+ TREE.updateFileAttribute( UID, key, value, opt_callback);
+ }
+ this.move = function( _newFolder, _newIndex, opt_callback){
+ TREE.move( parentFile, UID, _newFolder, _newIndex, opt_callback);
+ }
+ this.replace = function( _newIndex, opt_callback){
+ TREE.replace( parentFile, UID, _newIndex, opt_callback);
+ }
+ this.addEventListener = function( _eventType, _callback){
+ FILE_CONTROLER.addEventListener( UID, _eventType, _callback);
+ }
+ this.removeEventListener = function( _eventType, _callback){
+ FILE_CONTROLER.removeEventListener( UID, _eventType, _callback);
+ }
+ this.collect = function(){
+
}
};
function getFileObject( TREE, parentFile, data){
var _rootFile;
if( _treeType === TREE_TYPE_IS_COMIC) _rootFile = COMIC_FILEDATA;
if( _treeType === TREE_TYPE_IS_IMAGE) _rootFile = IMAGE_FILEDATA;
- if( _rootFile === undefined) return;
+ if( !_rootFile) return null;
return FILE_CONTROLER.createTree( _rootFile);
},
TREE_TYPE_IS_COMIC: 1,
var FinderIconClass = function(){
var elmContainer,
ELM_WRAPPER = ELM_ORIGIN_FINDER_ICON.cloneNode( true),
- ELM_THUMBNAIL = ELM_WRAPPER.getElementsByTagName( 'div')[0],
- ELM_FILENAME = ELM_WRAPPER.getElementsByTagName( 'div')[1],
+ ELM_THUMBNAIL = pettanr.util.getElementsByClassName( ELM_WRAPPER, 'finder-icon-thumbnail', 'div')[0],
+ ELM_FILENAME = pettanr.util.getElementsByClassName( ELM_WRAPPER, 'finder-icon-filename', 'div')[0],
file, w, index, style, instansce, callback;
ELM_WRAPPER.onclick = onClick;
callback( index);
}
-
function draw(){
var _thumb = file.getThumbnail();
if( _thumb !== null){
collect: function(){
elmContainer.removeChild( ELM_WRAPPER);
file = elmContainer = null;
- FINDER_ICON_POOL.push( this);
+ FINDER_ICON_POOL.push( instansce);
}
}
}