X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.4.x%2Fjavascripts%2Fsystem.js;h=bb45944288b3ec24918f2f93bd101ba3d185d848;hb=080ecdb578eb49a116464aefc6b86bd5b6f6da38;hp=f718bb5ddfdb6363ec494b2b1ab37376c38f3e8b;hpb=d832988712abc5e8baa2ea0f43f1db1f8fced762;p=pettanr%2FclientJs.git diff --git a/0.4.x/javascripts/system.js b/0.4.x/javascripts/system.js index f718bb5..bb45944 100644 --- a/0.4.x/javascripts/system.js +++ b/0.4.x/javascripts/system.js @@ -1,6 +1,6 @@ /* * pettanR system.js - * version 0.4.1 + * version 0.4.11 * * author: * itozyun @@ -35,42 +35,15 @@ pettanr.io = ( function(){ * 画像一覧を読み込むタイミング */ pettanr.file = ( function(){ - var TREE_TYPE_IS_COMIC = 1, - TREE_TYPE_IS_IMAGE = 2, - FILE_TYPE_IS_FOLDER = 1, - FILE_TYPE_IS_COMIC = 10, - FILE_TYPE_IS_PANEL = 11, - FILE_TYPE_IS_IMAGE = 20, - FILE_TYPE_IS_HTML = 30, - FILE_TYPE_IS_SETTING = 40, - FOLDER_TYPE_IS_COMIC = 1, - FILE_STATE_IS_UNKNOWN = 0, - FILE_STATE_IS_OK = 1, - FILE_STATE_IS_LOADING = 2, - FILE_STATE_IS_ERROR = 3, - FILE_STATE_IS_BROKEN = 4, - TREE_EVENT_UPDATE = 'onTreeUpdate', - FILE_EVENT_UPDATE_ATTRIVUTE = 'onFileUpdate', - FILE_EVENT_GET_SEQENTIAL_FILES = 'gotSeqentilFiles', - ROLE_IS_SUPER_USER = 2^4, - ROLE_IS_OWNER = 2^3, - ROLE_IS_CREATOR = 2^2, - 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 = [], - FILE_OBJECT_POOL = []; - + var FILE_TYPE_IS_FOLDER = 1, + numFileType = FILE_TYPE_IS_FOLDER, + FILEDATA_RESITER = [], // store all of fileData( json object ) + FILEDATA_ACCESS = [], // file operations for Kernel only ! hide from Out of pettanr.file + FILE_OBJECT_POOL = [], + EVENT_LISTENER_RESISTER = [], + TREE_ARRAY = [], + TREE_ACCESS_ARRAY = []; + var REQUEST_CONTROLER = ( function(){ var REQUEST_TICKET_RESISTER = [], DATA_TYPE_ARRAY = 'json,xml,html,text'.split( ','), @@ -106,9 +79,6 @@ pettanr.file = ( function(){ } return { - init: function(){ - delete REQUEST_CONTROLER.init; - }, getNumTask: function(){ return REQUEST_TICKET_RESISTER.length; }, @@ -124,369 +94,206 @@ pettanr.file = ( function(){ - var FILE_CONTROLER = ( function(){ - var EVENT_LISTENER_RESISTER = [], - TREE_ARRAY = [], - TREE_ACCESS_ARRAY = [], - instance; - - var TreeClass = function( ROOTFILE_DATA){ - var UID = TREE_ACCESS_ARRAY.length, - PARENT_FILE_RESITER = [], - ACCESS = { - fileEventChatcher: dispatchFileEvent, - destroy: onDestroy - }, - EVENT_LISTENER_ARRAY = [], - rootFile, - rootFileData, - currentFile, - currentFileData, - instance; - - TREE_ACCESS_ARRAY.push( ACCESS); - - function onDestroy(){ - - } - - function dispatchFileEvent( e){ - var _eventType = e.eventType, - _targetFile = e.targetFile, - _ticket, _type, _file, _callback, - l = EVENT_LISTENER_RESISTER.length; - for(var i=0; i= l) return null; - return PARENT_FILE_RESITER[ l -1 -_index]; - }, - down: function( _index){ - if( typeof _index !== 'number' || _index < 0 || _index >= currentFile.getChildFileLength()) return; - PARENT_FILE_RESITER.unshift( currentFile); - currentFile = currentFile.getChildFileByIndex( _index); - FILE_CONTROLER.getSeqentialFiles( currentFile); - return currentFile; - }, - up: function( _index){ - var l = PARENT_FILE_RESITER.length; - if( l === 0) return null; - if( typeof _index === 'number'){ - if( _index >= l) return null; - currentFile = this.getParentFileAt( _index); - PARENT_FILE_RESITER.splice( 0, l -_index); - } else { - currentFile = PARENT_FILE_RESITER.shift(); - } - FILE_CONTROLER.getSeqentialFiles( currentFile); - return currentFile; - }, - addTreeEventListener: function( _eventType, _callback){ - EVENT_LISTENER_RESISTER.push( new FileEventTicketClass( null, _eventType, _callback)); - }, - removeTreeEventListener: function( _eventType, _callback){ - - }, - createSearchResultFolder: function( _searchParam){ - - }, - destroySearchResultFolder: function( _searchParam){ - - }, - destroy: function(){ - destroyTree( UID); - } - } - }; - /** - * _access.DATA === FILEDATA_RESITER[uid] - */ - function getFileDataAccess( UIDorFILEorFILEDATA){ - var l = FILEDATA_ACCESS.length, - _uid, - _data, - _access; + var FILE_CONTROLER = { + createTree: function( _rootFileData){ + var _tree = new TreeClass( _rootFileData); + _tree.init(); + TREE_ARRAY.push( _tree); + return _tree; + }, + getFileDataAccess: function( UIDorFILEorFILEDATA){ + var _uid, _data, _access; 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; - for(var i=0; i= _bit; + }, + move: function( _prentUID, _targetfile, _newFolder, _newIndex, _opt_callback){ + var _parentData = FILE_CONTROLER.getFileDataAccess( _prentUID), + _parentType = _parentData.TYPE, + _targetData = FILE_CONTROLER.getFileDataAccess( _targetfile), + _targetType = _targetData.TYPE; + }, + replace: function( _uid, _file, _newIndex){ + + }, + addEventListener: function( FILEorNULL, _eventType, _callback){ + var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL; + EVENT_LISTENER_RESISTER.push( new FileEventTicketClass( _uid, _eventType, _callback)); + }, + removeEventListener: function( FILEorNULL, _eventType, _callback){ + var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL, + _ticket; + for(var i=0, l = EVENT_LISTENER_RESISTER.length; i= l) return null; + return PARENT_FILE_RESITER[ l -1 -_index]; }, - updateFileAttribute: function( _uid, key, _value, _opt_callback){ - var _data = getFileDataAccess( _uid), - _type = _data.TYPE; - - }, - getFileAttribute: function( _uid, KEYorKEYARRAY){ - var _fileData = getFileDataAccess( _uid), - _type = _fileData.TYPE; + down: function( _index){ + if( typeof _index !== 'number' || _index < 0 || _index >= currentFile.getChildFileLength()) return; + PARENT_FILE_RESITER.unshift( currentFile); + currentFile = currentFile.getChildFileByIndex( _index); + currentFile.getSeqentialFiles(); + return currentFile; }, - move: function( _prentUID, _targetfile, _newFolder, _newIndex, _opt_callback){ - var _parentData = getFileDataAccess( _prentUID), - _parentType = _parentData.TYPE, - _targetData = getFileDataAccess( _targetfile), - _targetType = _targetData.TYPE; + up: function( _index){ + var l = PARENT_FILE_RESITER.length; + if( l === 0) return null; + if( typeof _index === 'number'){ + if( _index >= l) return null; + currentFile = this.getParentFileAt( _index); + PARENT_FILE_RESITER.splice( 0, l -_index); + } else { + currentFile = PARENT_FILE_RESITER.shift(); + } + currentFile.getSeqentialFiles(); + return currentFile; }, - replace: function( _uid, _file, _newIndex){ - + addTreeEventListener: function( _eventType, _callback){ + FILE_CONTROLER.addEventListener( null, _eventType, _callback); }, - fileEventRellay: function( _targetFile, _targetTree, _event){ - var _uid = _targetTree.getUID(), - _access = TREE_ACCESS_ARRAY[ _uid], - l = TREE_ARRAY.length, - _tree, _currentFile; - _access !== undefined && _access.fileEventChatcher( _event); - for(var i=0; i= 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= _children.length) return null; + var _file = new FileClass( TREE, this, _children[ _index]); + // _file.init(); + return _file; + } + 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.destroy = function(){ + var _access = FILE_CONTROLER.getFileDataAccess( instance ); + _index = getChildIndex( FILEDATA_ACCESS, _access ); + if( _index === -1 || _access === null) return; + FILEDATA_ACCESS.splice( _index, 1); + TREE = parentFile = data = null; + delete _access.DATA, _access.updateParent, _access.dispatchFileEvent; + } + }; + + FileClass.prototype = { + isChildFile: function( _FILEorFILEDATA){ + return this.getChildFileIndex( _FILEorFILEDATA) !== -1; + }, + getSeqentialFiles: function(){ + var _driver = FILE_CONTROLER.getDriver( this ); + if( _driver !== null && typeof _driver.getSeqentialFiles === 'function'){ + _driver.getSeqentialFiles( this ); + } + }, + addEventListener: function( _eventType, _callback){ + FILE_CONTROLER.addEventListener( this, _eventType, _callback); + }, + removeEventListener: function( _eventType, _callback){ + FILE_CONTROLER.removeEventListener( this, _eventType, _callback); + }, + getChildFileLength: function(){ + var children = FILE_CONTROLER.getChildren( this); + return Type.isArray( children ) === true ? children.length : -1; + }, + getChildFileIndex: function( _FILEorFILEDATA){ + var children = FILE_CONTROLER.getChildren( this); + if( Type.isArray( children.length ) === false ) return -1; + var l = children.length, + _fileData = FILE_CONTROLER.getFileData( _FILEorFILEDATA); + if( _fileData === null) return -1; + for(var i=0; i 0){ - _file = FILE_OBJECT_POOL.shift(); - } else { - _file = new FileClass(); - } - _file.init( TREE, parentFile, data); - return _file; } var ROOT_FILEDATA = { - name: 'root', + name: 'system root', type: FILE_TYPE_IS_FOLDER, children: [] }, - IMAGE_FILEDATA = { - name: 'image root', - type: FILE_TYPE_IS_FOLDER, - json: pettanr.CONST.URL_ORIGINAL_PICTURES_JSON, - children: [ - { - name: 'My Pictures', - type: FILE_TYPE_IS_FOLDER, - children: [], - childType: FILE_TYPE_IS_IMAGE - } - ], - childType: FILE_TYPE_IS_IMAGE - }, - COMIC_FILEDATA = { - name: 'comic root', - type: FILE_TYPE_IS_FOLDER, - json: pettanr.CONST.URL_PANELS_JSON, - children: [ - { - name: 'My Comics', - type: FILE_TYPE_IS_FOLDER, - children: [], - childType: FILE_TYPE_IS_COMIC - } - ], - childType: FILE_TYPE_IS_PANEL - }; - //FILEDATA_RESITER.push( ROOT_FILEDATA, IMAGE_FILEDATA, IMAGE_FILEDATA.children[0], COMIC_FILEDATA); - ROOT_FILEDATA.children.push( COMIC_FILEDATA, IMAGE_FILEDATA); - - var SYSTEM_TREE = FILE_CONTROLER.createTree( ROOT_FILEDATA), - ROOT_FILE = SYSTEM_TREE.getRootFile(), - COMIC_ROOT_INDEX = ROOT_FILE.getChildFileIndex( COMIC_FILEDATA), - IMAGE_ROOT_INDEX = ROOT_FILE.getChildFileIndex( IMAGE_FILEDATA); - + SYSTEM_TREE = FILE_CONTROLER.createTree( ROOT_FILEDATA), + ROOT_FILE = SYSTEM_TREE.getRootFile(); + + function createFolderUnderRoot( _fileData){ + ROOT_FILEDATA.children.push( _fileData); + FILE_CONTROLER.getFileDataAccess( ROOT_FILE) + .dispatchFileEvent( new FileEventClass( pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES, ROOT_FILE, 'children', null)); + } + function createFileEvent( _eventType, _file, _key, _value){ + return new FileEventClass( _eventType, _file, _key, _value) + } + function createFileTypeID(){ + return ++numFileType; + } + return { init: function(){ - REQUEST_CONTROLER.init(); - FILE_CONTROLER.init(); + //REQUEST_CONTROLER.init(); + //FILE_CONTROLER.init(); delete pettanr.file.init; }, - createTree: function( _treeType){ - var _rootFile; - if( _treeType === TREE_TYPE_IS_COMIC) _rootFile = COMIC_FILEDATA; - if( _treeType === TREE_TYPE_IS_IMAGE) _rootFile = IMAGE_FILEDATA; - if( _rootFile === undefined) return; + resisterDriver: function( _driver){ + _driver.prototype = FileDriverBase; + /* + * File API + */ + return { + createFolderUnderRoot: createFolderUnderRoot, + getFileDataAccess: FILE_CONTROLER.getFileDataAccess, + getFileData: FILE_CONTROLER.getFileData, + getJson: REQUEST_CONTROLER.getJson, + createFileEvent: createFileEvent, + createFileTypeID: createFileTypeID + } + }, + createTree: function( _rootFile){ return FILE_CONTROLER.createTree( _rootFile); }, - TREE_TYPE_IS_COMIC: 1, - TREE_TYPE_IS_IMAGE: 2, - TREE_TYPE_IS_SETTING: 3, - FILE_TYPE_IS_FOLDER: FILE_TYPE_IS_FOLDER, - FILE_TYPE_IS_IMAGE: FILE_TYPE_IS_IMAGE, - FILE_TYPE_IS_PANEL: FILE_TYPE_IS_PANEL, - FILE_TYPE_IS_SETTING: FILE_TYPE_IS_SETTING + isTreeInstance: function( _tree){ + return _tree instanceof TreeClass; + }, + isFileInstance: function( _file){ + return _file instanceof FileClass; + }, + FILE_TYPE: { + UNKNOWN: 0, + FOLDER: FILE_TYPE_IS_FOLDER, + IMAGE: createFileTypeID(), + TEXT: createFileTypeID(), + HTML: createFileTypeID(), + CSV: createFileTypeID(), + JSON: createFileTypeID(), + XML: createFileTypeID() + }, + FILE_STATE: { + UNKNOWN: 0, + OK: 1, + LOADING: 2, + ERROR: 3, + BROKEN: 4 + }, + FILE_UPDATE_POLICY: { + ____: parseInt( '0000', 2), + ___C: parseInt( '0001', 2), // hasCreateMenu + __W_: parseInt( '0010', 2), // isWritable + __WC: parseInt( '0011', 2), // isWritable + _R__: parseInt( '0000', 2), // isRenamable + _R_C: parseInt( '0101', 2), // hasCreateMenu + _RW_: parseInt( '0110', 2), // isWritable + _RWC: parseInt( '0111', 2), // isWritable + S___: parseInt( '1000', 2), // childrenIsSortable + S__C: parseInt( '1001', 2), + S_W_: parseInt( '1010', 2), + S_WC: parseInt( '1011', 2), + SR__: parseInt( '1000', 2), + SR_C: parseInt( '1101', 2), + SRW_: parseInt( '1110', 2), + SRWC: parseInt( '1111', 2), + CREATE: 1, + WRAITE: 2, + RENAME: 4, + SORT: 8 + }, + TREE_EVENT: { + UPDATE: 'onTreeUpdate' + }, + FILE_EVENT: { + UPDATE_ATTRIVUTE: 'onFileUpdate', + GET_SEQENTIAL_FILES:'gotSeqentilFiles' + }, + FILE_DATA_PROPERTY_RESERVED: [ + 'children', 'driver', 'state', 'type' + ] } })(); @@ -713,8 +630,8 @@ pettanr.finder = ( function(){ 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; @@ -722,14 +639,13 @@ pettanr.finder = ( function(){ callback( index); } - function draw(){ var _thumb = file.getThumbnail(); - if( _thumb !== null){ + if( _thumb.image){ ELM_THUMBNAIL.className = ICON_CLASSNAME + ' has-thumbnail'; - ELM_THUMBNAIL.style.backgroundImage = [ 'url(', _thumb, ')'].join( ''); + ELM_THUMBNAIL.style.backgroundImage = [ 'url(', _thumb.image, ')'].join( ''); } else { - ELM_THUMBNAIL.className = ICON_CLASSNAME + ' file-type-' +file.TYPE(); + ELM_THUMBNAIL.className = ICON_CLASSNAME + ' ' +_thumb.className; ELM_THUMBNAIL.style.backgroundImage = ''; } ELM_FILENAME.innerHTML = file.getName(); @@ -772,10 +688,10 @@ pettanr.finder = ( function(){ onResize: function( w){ }, - collect: function(){ + destroy: function(){ elmContainer.removeChild( ELM_WRAPPER); file = elmContainer = null; - FINDER_ICON_POOL.push( this); + FINDER_ICON_POOL.push( instansce); } } } @@ -790,7 +706,7 @@ pettanr.finder = ( function(){ callback; ELM_WRAPPER.onclick = onClick; function draw(){ - ELM_FILENAME.className = 'file-icon-' +file.TYPE(); + ELM_FILENAME.className = 'file-icon-' +file.getType(); ELM_FILENAME.innerHTML = file.getName(); } function resize( index){ @@ -798,6 +714,7 @@ pettanr.finder = ( function(){ } function onClick(){ callback( index); + return false; } return { @@ -825,7 +742,7 @@ pettanr.finder = ( function(){ onResize: function( w){ }, - collect: function(){ + destroy: function(){ elmContainer.removeChild( ELM_WRAPPER); file = elmContainer = null; BREAD_OBJECT_POOL.push( this); @@ -833,7 +750,7 @@ pettanr.finder = ( function(){ } } - var FinderClass = function( ELM_CONTAINER, TREE_TYPE, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){ + var FinderClass = function( ELM_CONTAINER, tree, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){ var ICON_ARRAY = [], BREAD_ARRAY = [], elmContainer = ELM_ORIGIN_CONTAINER.cloneNode( true), @@ -843,7 +760,7 @@ pettanr.finder = ( function(){ elmStyleButton = nodesDiv[2], elmActionButton = nodesDiv[3], elmBody = nodesDiv[ nodesDiv.length -1], - tree = pettanr.file.createTree( TREE_TYPE), + //tree = pettanr.file.createTree( TREE_TYPE), headX, headY, headH = pettanr.util.getElementSize( ELM_ORIGIN_FINDER_ICON).height, @@ -856,7 +773,7 @@ pettanr.finder = ( function(){ style = 0; w = 800; - tree.addTreeEventListener( 'onTreeUpdate', draw); + tree.addTreeEventListener( pettanr.file.TREE_EVENT.UPDATE, draw); function draw(){ var l = tree.hierarchy() +1, @@ -871,7 +788,7 @@ pettanr.finder = ( function(){ } } while( l < BREAD_ARRAY.length){ - BREAD_ARRAY.pop().collect(); + BREAD_ARRAY.pop().destroy(); } l = _file.getChildFileLength(); @@ -885,7 +802,7 @@ pettanr.finder = ( function(){ } } while( l < ICON_ARRAY.length){ - ICON_ARRAY.pop().collect(); + ICON_ARRAY.pop().destroy(); } } function onHeadClick( i){ @@ -902,34 +819,32 @@ pettanr.finder = ( function(){ var l = ICON_ARRAY.length; if( i < l){ var _file = tree.getCurrentFile().getChildFileByIndex( i); - if( _file !== null && _file.TYPE() === pettanr.file.FILE_TYPE_IS_FOLDER){ + if( _file !== null && ( _file.getChildFileLength() !== -1 || _file.getType() === pettanr.file.FILE_TYPE.FOLDER)){ tree.down( i); draw(); } } } - return { - init: function(){ - ELM_CONTAINER.appendChild( elmContainer); - //$( elmLocation).click( onHeadClick); - //$( elmContainer).click( onBodyClick); - var position = pettanr.util.getAbsolutePosition( elmLocation); - headX = position.x; - headY = position.y; - bodyY = pettanr.util.getAbsolutePosition( elmBody).y; - delete this.init; - }, - onOpen: function(){ - this.init !== undefined && this.init(); - draw(); - }, - onClose: function(){ - - }, - onWindowResize: function( _w, _h){ + this.init = function(){ + ELM_CONTAINER.appendChild( elmContainer); + //$( elmLocation).click( onHeadClick); + //$( elmContainer).click( onBodyClick); + var position = pettanr.util.getAbsolutePosition( elmLocation); + headX = position.x; + headY = position.y; + bodyY = pettanr.util.getAbsolutePosition( elmBody).y; + delete this.init; + } + this.onOpen = function(){ + this.init !== undefined && this.init(); + draw(); + } + this.onClose = function(){ + + } + this.onWindowResize = function( _w, _h){ - } } } function getFinderIcon( _file, _elmContainer, w, index, style, callback){ @@ -958,14 +873,372 @@ pettanr.finder = ( function(){ init: function(){ }, - createFinder: function( _elmTarget, _treeType, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){ - var _finder = new FinderClass( _elmTarget, _treeType, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled); + createFinder: function( _elmTarget, _tree, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){ + var _finder = new FinderClass( _elmTarget, _tree, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled); FINDER_ARRAY.push( _finder); return _finder; + }, + createFinderHead: function(){ + + }, + resisterFinderPane: function( _finderPane){ + + }, + isFinderInstance: function( _finder){ + return _finder instanceof FinderClass; + } + } +})(); + + +pettanr.driver = ( function(){ + var MyAuthorID = 'current_author' in window ? current_author.id : 1, + MyArtistID = 'current_artist' in window ? current_artist.id : 1, + Driver = { + getSeqentialFiles: function( _file){ + var _data = FileAPI.getFileData( _file), + _json = _data !== null ? _data.json : null; + if( _json === true && _data.type === pettanr.driver.FILE_TYPE.COMIC ){ + _json = [ pettanr.CONST.PETTANR_ROOT_PATH, 'comics\/', _data.id, '.json\/play\/' ].join( '' ); + } + if( typeof _json === 'string'){ + FileAPI.getJson( _file, _json, onLoadJson, onErrorJson); + _data.state = pettanr.file.FILE_STATE.LOADING; + _data.json = null; + return; + } + }, + getName: function( _file){ + var _data = FileAPI.getFileData( _file), + _type = _data !== null ? _data.type : null; + if( _type === pettanr.driver.FILE_TYPE.PICTURE ){ + return [ _data.id, _data.ext ].join( '.'); + } else + if( _type === pettanr.driver.FILE_TYPE.PANEL ){ + return [ _data.t, ':', _data.comic.title ].join( ''); + } else + if( _type === pettanr.driver.FILE_TYPE.COMIC ){ + return _data.title; + } else + if( _type === pettanr.driver.FILE_TYPE.ARTIST ){ + return [ _data.id , ':', _data.name, '画伯' ].join( ''); + } else + if( _type === pettanr.driver.FILE_TYPE.AUTHOR ){ + return [ _data.id , ':', _data.name, '先生' ].join( ''); + } + return _data.name; + }, + getThumbnail: function( _file){ + var _data = FileAPI.getFileData( _file); + _type = _data !== null ? _data.type : null; + if( _type === pettanr.driver.FILE_TYPE.PICTURE){ + return { image: [ pettanr.CONST.RESOURCE_PICTURE_PATH, 'thumbnail/', _data.id, '.', _data.ext ].join( '')}; + } + if( _data === FILE_DATA_COMICS_ROOT){ + return { className: 'file-type-cabinet'}; + } + if( _type === pettanr.driver.FILE_TYPE.COMIC){ + return { className: 'file-type-comic'}; + } + if( _type === pettanr.driver.FILE_TYPE.PANEL){ + return { className: 'file-type-panel'}; + } + if( _type === pettanr.driver.FILE_TYPE.AUTHOR){ + return { className: 'file-type-author'}; + } + if( _type === pettanr.driver.FILE_TYPE.ARTIST){ + return { className: 'file-type-artist'}; + } + if( _type === pettanr.driver.FILE_TYPE.FOLDEER){ + return { className: 'file-type-folder'}; + } + return { className: 'file-type-folder'}; + } + }, + FileAPI = pettanr.file.resisterDriver( Driver), + FILE_DATA_SERVICE_ROOT = { + name: 'PettanR root', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [] + }, + FILE_DATA_COMICS_ROOT = { + name: 'Comics', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [], + driver: Driver, + json: pettanr.CONST.URL_COMICS_JSON + }, + FILE_DATA_PANELS_ROOT = { + name: 'Panels', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [], + driver: Driver, + json: pettanr.CONST.URL_PANELS_JSON + }, + FILE_DATA_PICTURE_ROOT = { + name: 'Picutures', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [], + driver: Driver, + json: pettanr.CONST.URL_RESOURCE_PICTURES_JSON + }, + FILE_DATA_MY_COMICS_ROOT = { + name: 'My Comics', + type: pettanr.file.FILE_TYPE.AUTHOR, + children: [], + driver: Driver + }, + FILE_DATA_MY_PICTURES_ROOT = { + name: 'My Pictures', + type: pettanr.file.FILE_TYPE.ARTIST, + children: [], + driver: Driver, + json: pettanr.CONST.URL_ORIGINAL_PICTURES_JSON + }, + FILE_DATA_AUTHOR_ROOT = { + name: 'Authors', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [] + }, + FILE_DATA_ARTIST_ROOT = { + name: 'Artists', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [] + }, + FILE_DATA_LISENCE_ROOT = { + name: 'Original Lisences', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [] + }, + FILE_DATA_BALLOON_ROOT = { + name: 'Balloon templetes', + type: pettanr.file.FILE_TYPE.FOLDER, + children: [] + }, + AUTHOR_ARRAY = [], + ARTIST_ARRAY = [], + PANEL_ARRAY = [], + COMIC_ARRAY = [], + RESOURCE_PICTURE_ARRAY = [], + BALLOON_TEMPLETE_ARRAY = [], + ORIGINAL_LICENSE_ARRAY = [], + BASIC_LICENSES = 'cc_by,cc_nc,cc_nd,cc_sa,keep_aspect_ratio,no_convert,no_flip,no_resize'.split( ','); + FILE_DATA_SERVICE_ROOT.children.push( FILE_DATA_COMICS_ROOT, FILE_DATA_PICTURE_ROOT, FILE_DATA_PANELS_ROOT, FILE_DATA_LISENCE_ROOT, FILE_DATA_BALLOON_ROOT); + FILE_DATA_COMICS_ROOT.children.push( FILE_DATA_MY_COMICS_ROOT, FILE_DATA_AUTHOR_ROOT); + FILE_DATA_PICTURE_ROOT.children.push( FILE_DATA_MY_PICTURES_ROOT, FILE_DATA_ARTIST_ROOT); + + FileAPI.createFolderUnderRoot( FILE_DATA_SERVICE_ROOT); + + function onLoadJson( _file, _json){ + var _access = FileAPI.getFileDataAccess( _file), + _data = _access !== null ? _access.DATA : null, + l; + if( _data === null){ + onErrorJson( _file); + return; + } + _data.state = pettanr.file.FILE_STATE.OK; + + if( Type.isArray( _json ) === true ){ + var l = _json.length; + if( l === 0) return; + for( var i=0; i 0 ){ + var _id = _data.id - 1, + __data = _array[ _id ], + _reserved = pettanr.file.FILE_DATA_PROPERTY_RESERVED.join( ', ' ); + if( __data ){ + for( var key in _data){ + if( _reserved.indexOf( key ) === -1 ){ + __data[ key ] = _data[ key ]; + } + } + _data = __data; // このタイミングで参照が切れるので注意!! + } else { + _array[ _id ] = _data; + } + } else { + alert( 'error' ); + } + + // Author + // Artist + if( _parent === FILE_DATA_AUTHOR_ROOT || _parent === FILE_DATA_ARTIST_ROOT ){ + addChildData( _parent, _data ); + } else + // Comic + Panels + if( _parent.type === pettanr.driver.FILE_TYPE.COMIC || _parent === FILE_DATA_COMICS_ROOT ){ + var _panels = _data.panels, + _panel; + if( _panels && Type.isArray( _panels ) === true ){ + + for( i=0, l=_panels.length; i